<!DOCTYPE html>
<!-- saved from url=(0041)http://c.biancheng.net/view/vip_7045.html -->
<html lang="zh-CN"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><script type="text/javascript" async="" charset="utf-8" src="./1.10Java和C_C++到底有什么关系，它们有什么区别？_files/core.php"></script>

<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 上述3个meta标签*必须*放在最前面，任何其他内容都*必须*跟随其后！ -->
<!-- 启用Chromium高速渲染模式 -->
<meta name="renderer" content="webkit">
<meta name="force-rendering" content="webkit">
<!-- 禁止百度转码 -->
<meta name="applicable-device" content="pc,mobile">
<meta name="MobileOptimized" content="width">
<meta name="HandheldFriendly" content="true">
<meta http-equiv="Cache-Control" content="no-transform">
<meta http-equiv="Cache-Control" content="no-siteapp">
<!-- 禁止识别电话号码 -->
<meta name="format-detection" content="telephone=no">

<link rel="shortcut icon" href="http://c.biancheng.net/favicon.ico?v=1.6.72">
<link href="./1.10Java和C_C++到底有什么关系，它们有什么区别？_files/common.css" rel="stylesheet">
<title>Java和C/C++到底有什么关系，它们有什么区别？</title>
<meta name="description" content="自 2001 年起，TIOBE 编程语言排行榜的三甲位置一直被 Java、C 与 C++ 长期占据。那么这一节就跟大家简单说一说 Java 和 C/C++ 之间的关系和发展历程。 大家知道，编程语言的发展，其实是经">
</head>
<body>
<div id="topbar" class="clearfix">
	<ul id="product-type" class="left">
		<li>
			<a href="http://c.biancheng.net/"><span class="iconfont iconfont-home"></span>首页</a>
		</li>
		<li class="active">
			<a href="http://c.biancheng.net/sitemap/" rel="nofollow"><span class="iconfont iconfont-book"></span>教程</a>
		</li>
		<li>
			<a href="http://vip.biancheng.net/p/vip/show.php" rel="nofollow" target="_blank"><span class="iconfont iconfont-vip"></span>VIP会员</a>
		</li>
		<li>
			<a href="http://vip.biancheng.net/p/q2a/show.php" rel="nofollow" target="_blank"><span class="iconfont iconfont-q2a"></span>一对一答疑</a>
		</li>
		<li>
			<a href="http://fudao.biancheng.net/" rel="nofollow" target="_blank"><span class="iconfont iconfont-fudao"></span>辅导班</a>
		</li>
	</ul>
</div>
<div id="header" class="clearfix">
	<a id="logo" class="left" href="http://c.biancheng.net/">
		<img height="26" src="./1.10Java和C_C++到底有什么关系，它们有什么区别？_files/logo.png" alt="C语言中文网">
	</a>
	<ul id="nav-main" class="hover-none left clearfix">
		<li class="wap-yes"><a href="http://c.biancheng.net/">首页</a></li>
		<li><a href="http://c.biancheng.net/c/">C语言教程</a></li>
		<li><a href="http://c.biancheng.net/cplus/">C++教程</a></li>
		<li><a href="http://c.biancheng.net/python/">Python教程</a></li>
		<li><a href="http://c.biancheng.net/java/">Java教程</a></li>
		<li><a href="http://c.biancheng.net/linux_tutorial/">Linux入门</a></li>
		<li><a href="http://c.biancheng.net/sitemap/" title="网站地图">更多&gt;&gt;</a></li>
	</ul>
	<span id="sidebar-toggle" class="toggle-btn" toggle-target="#sidebar">目录 <span class="glyphicon"></span></span>

	<a href="http://vip.biancheng.net/?from=topbar" class="user-info glyphicon glyphicon-user hover-none" target="_blank" rel="nofollow" title="用户中心"></a>
</div>
<div id="main" class="clearfix">
	<div id="sidebar" class="toggle-target">
	<div id="contents">
		<dt><span class="glyphicon glyphicon-option-vertical" aria-hidden="true"></span><a href="http://c.biancheng.net/java/">Java教程</a></dt>
		<dd class="this"> <span class="channel-num">1</span> <a href="http://c.biancheng.net/java/10/">Java入门基础及环境搭建</a> </dd><dl class="dl-sub"><dd>1.1 <a href="http://c.biancheng.net/view/1282.html">Java是什么</a></dd><dd>1.2 <a href="http://c.biancheng.net/view/vip_7043.html">Java程序员工资高么？就业方向有哪些？</a><span class="glyphicon glyphicon-usd"></span></dd><dd>1.3 <a href="http://c.biancheng.net/view/1286.html">Java JDK下载与安装教程</a></dd><dd>1.4 <a href="http://c.biancheng.net/view/1290.html">Java JDK环境变量配置</a></dd><dd>1.5 <a href="http://c.biancheng.net/view/5611.html">使用记事本编写运行Java程序</a></dd><dd>1.6 <a href="http://c.biancheng.net/view/1296.html">Java编程规范</a></dd><dd>1.7 <a href="http://c.biancheng.net/view/5607.html">Java程序的运行过程</a></dd><dd>1.8 <a href="http://c.biancheng.net/view/vip_7044.html">Java是如何实现跨平台的，原理是什么？</a><span class="glyphicon glyphicon-usd"></span></dd><dd>1.9 <a href="http://c.biancheng.net/view/5591.html">Java中JVM、JRE和JDK三者有什么区别和联系？</a></dd><dd class="active">1.10 <a href="http://c.biancheng.net/view/vip_7045.html">Java和C/C++到底有什么关系，它们有什么区别？</a><span class="glyphicon glyphicon-usd"></span></dd><dd>1.11 <a href="http://c.biancheng.net/view/5637.html">Java开发工具</a></dd><dd>1.12 <a href="http://c.biancheng.net/view/1298.html">Java Eclipse下载安装教程</a></dd><dd>1.13 <a href="http://c.biancheng.net/view/5631.html">使用Eclipse开发第一个Java程序</a></dd><dd>1.14 <a href="http://c.biancheng.net/view/1307.html">Java修改Eclipse编辑器字体大小</a></dd><dd>1.15 <a href="http://c.biancheng.net/view/1311.html">Java Eclipse如何调试代码</a></dd><dd>1.16 <a href="http://c.biancheng.net/view/5601.html">Eclipse快捷键大全</a></dd><dd>1.17 <a href="http://c.biancheng.net/view/5644.html">Java初学者容易犯的错误</a></dd><dd>1.18 <a href="http://c.biancheng.net/view/vip_7046.html">掌握这几个方法，学习Java事半功倍！</a><span class="glyphicon glyphicon-usd"></span></dd><dd>1.19 <a href="http://c.biancheng.net/view/5624.html">Java程序员学习路线</a></dd><dd>1.20 <a href="http://c.biancheng.net/view/vip_8118.html">目前主流的Java Web开发框架，初学者一定要了解！</a><span class="glyphicon glyphicon-usd"></span></dd></dl>
			<dd>
				<span class="channel-num">2</span>
				<a href="http://c.biancheng.net/java/20/">Java程序设计基础</a>
			</dd>
		
			<dd>
				<span class="channel-num">3</span>
				<a href="http://c.biancheng.net/java/30/">Java流程控制语句</a>
			</dd>
		
			<dd>
				<span class="channel-num">4</span>
				<a href="http://c.biancheng.net/java/40/">Java字符串处理</a>
			</dd>
		
			<dd>
				<span class="channel-num">5</span>
				<a href="http://c.biancheng.net/java/50/">Java数字和日期处理</a>
			</dd>
		
			<dd>
				<span class="channel-num">6</span>
				<a href="http://c.biancheng.net/java/60/">Java内置包装类</a>
			</dd>
		
			<dd>
				<span class="channel-num">7</span>
				<a href="http://c.biancheng.net/java/70/">Java数组处理</a>
			</dd>
		
			<dd>
				<span class="channel-num">8</span>
				<a href="http://c.biancheng.net/java/80/">Java类和对象</a>
			</dd>
		
			<dd>
				<span class="channel-num">9</span>
				<a href="http://c.biancheng.net/java/90/">Java继承和多态</a>
			</dd>
		
			<dd>
				<span class="channel-num">10</span>
				<a href="http://c.biancheng.net/java/100/">Java异常处理</a>
			</dd>
		
			<dd>
				<span class="channel-num">11</span>
				<a href="http://c.biancheng.net/java/110/">Java集合、泛型和枚举</a>
			</dd>
		
			<dd>
				<span class="channel-num">12</span>
				<a href="http://c.biancheng.net/java/120/">Java反射机制</a>
			</dd>
		
			<dd>
				<span class="channel-num">13</span>
				<a href="http://c.biancheng.net/java/130/">Java输入/输出流</a>
			</dd>
		
			<dd>
				<span class="channel-num">14</span>
				<a href="http://c.biancheng.net/java/java/135/">Java注解</a>
			</dd>
		
	</div>
</div>
	<div id="article-wrap">
		<div id="article">
			<div class="arc-info">
	<span class="position"><span class="glyphicon glyphicon-map-marker"></span> <a href="http://c.biancheng.net/">首页</a> &gt; <a href="http://c.biancheng.net/java/">Java教程</a> &gt; <a href="http://c.biancheng.net/java/10/">Java入门基础及环境搭建</a></span>
	<span class="read-num">阅读：20,826</span>
</div>

<div id="ad-position-bottom"></div>
			<h1>Java和C/C++到底有什么关系，它们有什么区别？</h1>
			<div class="pre-next-page clearfix">
                    <span class="pre left"><span class="icon">&lt;</span> <span class="text-brief text-brief-pre">上一页</span><a href="http://c.biancheng.net/view/5591.html">Java中JVM、JRE和JDK三者有什么区别和联系？</a></span>
                    <span class="next right"><a href="http://c.biancheng.net/view/5637.html">Java开发工具</a><span class="text-brief text-brief-next">下一页</span> <span class="icon">&gt;</span></span>
                </div>
			<div id="ad-arc-top"><p class="pic"></p><p class="text" adid="java-1v1q2a"><a href="http://c.biancheng.net/view/7552.html" target="_blank" style="color: #D33428;">C语言中文网推出辅导班啦，包括<span style="color: #008000;">「C语言辅导班、C++辅导班、算法/数据结构辅导班」</span>，全部都是一对一教学：一对一辅导 + 一对一答疑 + 布置作业 + 项目实践 + 永久学习。QQ在线，随时响应！</a></p></div>
			<div id="arc-body">自 2001 年起，TIOBE 编程语言排行榜的三甲位置一直被 Java、C 与 C++ 长期占据。那么这一节就跟大家简单说一说 Java 和 C/C++ 之间的关系和发展历程。<br>
<br>
大家知道，编程语言的发展，其实是经过了三个比较大的阶段阶段，那就是<span style="color:#b22222;">汇编语言 –&gt;&nbsp; 面向过程语言 -&gt;面向对象语言</span>。<br>
<br>
汇编语言由于其难度太大，需要记忆的语句命令过多，但是其对计算机底层的控制和操作能力还是很强大的，由于学习成本太大，效率较低，已经不作为现在计算机系的重点教程了。<br>
<br>
<span style="color:#b22222;">C语言可以作为面向过程语言的一种代表，算是一种比较纯正的面向过程语言了。而面向过程的语言也称为结构化程序设计语言，是高级语言的一种。</span>在面向过程程序设计中，问题被看作一系列需要完成的任务，函数则用于完成这些任务，解决问题的焦点集中于函数。所以说C语言<span style="color:#b22222;">的基本单位也是函数</span>。<br>
<br>
其概念最早由 E．W．Dijikstra 在 1965 年提出，它的主要观点是采用自顶向下、逐步求精的程序设计方法，使用三种基本控制结构构造程序，即任何程序都可由顺序、选择（if-else，switch-default）、循环（for，while，do-while）三种基本控制结构构造。<br>
<br>
像C语言这种的面向过程语言的最大的优势就是适合模块化设计。一个程序可以分解为多个函数，通过函数调用过程，使得可以用一条函数调用语句实现函数所完成的复杂运算过程。这种方法使得可以将一个复杂问题的解决过程分解为较为简单的几个子问题的解决过程。<br>
<br>
首先通过编写函数用语句描述解决每一个子问题的解决过程的步骤，然后可以用一条函数凋用语句描述解决某个予问题的过程的步骤，最后在一个主程序中用多条函数调用语句描述解决分解为多个子问题的复杂问题的解决过程的步骤。<br>
<br>
但是当我们在做研发系统诸如此类的问题时，开始肯定不清楚这个系统完工后的架构是怎么样的，所以说，利用模块化设计的语言，就很难对开发出来的系统进行调整（或者工作量会很大）。在此类诸多问题的压力下，面向对象语言便体现出了其独一无二的优势。<br>
<br>
面向对象语言，OOP（Object-Oriented Programming），是一类以对象作为基本程序结构单位的程序设计语言。Java 便就是面向对象编程中的的一种代表性语言。<br>
<br>
<table>
	<tbody>
		<tr>
			<td>
				C 语言</td>
			<td>
				19 世纪 70 年代初问世，1978 年美国电话电报公司（AT&amp;T）贝尔实验室正式发布C语言。</td>
		</tr>
		<tr>
			<td>
				C++</td>
			<td>
				在 C 基础上，1983 年贝尔实验室推出了 C++。</td>
		</tr>
		<tr>
			<td>
				Java</td>
			<td>
				由 Sun 公司于 1995 年 5 月推出。</td>
		</tr>
	</tbody>
</table>
<br>
其实最早，C++ 相对于C语言的基础上就添加了面向对象和模块的思想，这也可以理解成 C++ 中两个加号的来历。<br>
<br>
然而，C++ 在面向对象上做的并不是太好，比如说 C++ 支持多继承，多继承会引发不确定性。C++ 同时支持指针，指针直接对内存底层操作，虽然效率高，危险系数却非常高，比如，一个简单的病毒程序就可以靠指针完成：你通过一个程序的中给指针随机赋值，能够获取到访问不属于本程序执行空间的其他空间的权限，那么这也就是一个计算机病毒。<br>
<br>
当然，真正的病毒不可能那么简单，但这是基本特性，所以 Java 在 C++ 的基础上移除了指针，增加了引用，提高了安全性。<br>
<br>
Java 是由 C++发展而来的，保留了 C++ 的大部分内容，其编程方式类似于 C++。但 Java 的句法更清晰、规模更小、更易学。Sun 公司曾对多种程序设计语言进行分析研究，取其精华去其糟粕，最终推出了 Java。Java 从根本上解决了 C++ 的固有缺陷，形成了新一代面向对象的程序设计语言。<br>
<br>
Java 和 C/C++ 的相似之处多于不同之处，有 C 基础的读者，学习 Java 会更容易。相较而言，Java 的编程环境更为简单。<br>
<br>
在 C++ 中，假如你写同样一个程序，在 Java 里面会报错，而在 C++ 语言里面是不会报错的。为什么？因为 C/C++ 语言设计的思想是：你想怎么写程序就怎么写，只要你的这种写法错得不是很离谱，就认为你这么写有特殊的含义，可以通过。但 Java 不行：只要你这么写有歧义，或者说这样写不太好，那么它都会报错。<br>
<br>
比如 C++ 中你可以将一个浮点型数据赋给一个整型变量，编译时只会警告，因为会丢失精度，但是在 Java 中这样写就会报错，它在语法上就禁止你这样写。这就是不同的语言对同样一个问题有不同的理解和处理方式。<br>
<br>
由于 C++ 中大大小小的问题会导致不安全性，所以就在 C++ 的基础上，取其精华，去其糟粕，便形成了早期的 Java 语言。直到现在，Java 又多了很多新的特性，比如说集合，反射，泛型，Lambda 表达式等等。所以，正因为 C -&gt; C++ -&gt; Java 的发展历史，所以导致了 Java 在一定程度上继承了多数C语言的语法，但又有一定的改变。<br>
<br>
以下是我们整理的 Java 和 C/C++ 的 10 条不同之处。<br>
<ol>
	<li>
		C++ 支持指针，而 Java 没有指针的概念。</li>
	<li>
		C++ 支持多继承，而 Java 不支持多重继承，但允许一个类实现多个接口。</li>
	<li>
		Java 是完全面向对象的语言，并且还取消了 C/C++ 中的结构和联合，使编译程序更加简洁</li>
	<li>
		Java 自动进行无用内存回收操作，不再需要程序员进行手动删除，而 C++ 中必须由程序释放内存资源，这就增加了程序员的负担。</li>
	<li>
		Java 不支持操作符重载，操作符重载则被认为是 C++ 的突出特征。</li>
	<li>
		Java 允许预处理，但不支持预处理器功能，所以为了实现预处理，它提供了引入语句（import），但它与 C++ 预处理器的功能类似。</li>
	<li>
		Java 不支持缺省参数函数，而 C++ 支持 。</li>
	<li>
		C 和 C++ 不支持字符串变量，在 C 和 C++ 程序中使用“Null”终止符代表字符串的结束。在 Java 中字符串是用类对象（String 和 StringBuffer）来实现的</li>
	<li>
		goto 语句是 C 和 C++ 的“遗物”，Java 不提供 goto 语句，虽然 Java 指定 goto 作为关键字，但不支持它的使用，这使程序更简洁易读。</li>
	<li>
		Java 不支持 C++ 中的自动强制类型转换，如果需要，必须由程序显式进行强制类型转换。</li>
</ol>
</div>
			<div id="arc-append">
	<p>关注微信公众号「站长严长生」，在手机上阅读所有教程，随时随地都能学习。本公众号由<a class="col-link" href="http://c.biancheng.net/view/8092.html" target="_blank" rel="nofollow">C语言中文网站长</a>运营，每日更新，坚持原创，敢说真话，凡事有态度。</p>
	<p style="margin-top:12px; text-align:center;">
		<img width="180" src="./1.10Java和C_C++到底有什么关系，它们有什么区别？_files/qrcode_weixueyuan_original.png" alt="魏雪原二维码"><br>
		<span class="col-green">微信扫描二维码关注公众号</span>
	</p>
</div>
<!-- <p>关注微信公众号「魏雪原」，跟着<a class="col-link" href="/view/8092.html" target="_blank">站长</a>一起学习，拒绝躺平，跳出内卷，用知识完成阶级跃升：</p>
	<ul>
		<li>每日更新，坚持原创，敢说真话，凡事有态度。</li>
		<li>编程+求职+创业+营销，既有硬知识，也有软技能。</li>
		<li>手机端阅读教程，随时随地都能学习。</li>
		<li>即将绑定网站部分功能，包括注册登录、找回密码、获取下载链接等。</li>
	</ul> -->
			<div class="pre-next-page clearfix">
                    <span class="pre left"><span class="icon">&lt;</span> <span class="text-brief text-brief-pre">上一页</span><a href="http://c.biancheng.net/view/5591.html">Java中JVM、JRE和JDK三者有什么区别和联系？</a></span>
                    <span class="next right"><a href="http://c.biancheng.net/view/5637.html">Java开发工具</a><span class="text-brief text-brief-next">下一页</span> <span class="icon">&gt;</span></span>
                </div>
			<div id="ad-arc-bottom"></div>

<!-- <div id="ad-bottom-weixin" class="clearfix">
	<div class="left" style="width: 535px;">
		<p><span class="col-red">编程帮</span>，一个分享编程知识的公众号。跟着<a class="col-link" href="/cpp/about/author/" target="_blank">站长</a>一起学习，每天都有进步。</p>
		<p>通俗易懂，深入浅出，一篇文章只讲一个知识点。</p>
		<p>文章不深奥，不需要钻研，在公交、在地铁、在厕所都可以阅读，随时随地涨姿势。</p>
		<p>文章不涉及代码，不烧脑细胞，人人都可以学习。</p>
		<p>当你决定关注「编程帮」，你已然超越了90%的程序员！</p>
	</div>
	<div class="right" style="width: 150px;">
		<img width="150" src="/templets/new/images/erweima_biancheng.gif?v=1.6.72" alt="编程帮二维码" /><br />
		<span class="col-green">微信扫描二维码关注</span>
	</div>
</div> -->

<div id="nice-arcs" class="box-bottom">
	<h4>优秀文章</h4>
	<ul class="clearfix">
<li><a href="http://c.biancheng.net/view/660.html" title="GCC编译C语言程序完整演示">GCC编译C语言程序完整演示</a></li>
<li><a href="http://c.biancheng.net/view/736.html" title="Linux head命令：显示文件开头的内容">Linux head命令：显示文件开头的内容</a></li>
<li><a href="http://c.biancheng.net/view/2337.html" title="C++重载=（赋值运算符）">C++重载=（赋值运算符）</a></li>
<li><a href="http://c.biancheng.net/view/3107.html" title="Shell代码块重定向">Shell代码块重定向</a></li>
<li><a href="http://c.biancheng.net/view/3183.html" title="编写自己的Shell配置文件（脚本）">编写自己的Shell配置文件（脚本）</a></li>
<li><a href="http://c.biancheng.net/view/3566.html" title="汇编语言条件跳转简介">汇编语言条件跳转简介</a></li>
<li><a href="http://c.biancheng.net/view/5325.html" title="Eureka注册中心开启密码认证">Eureka注册中心开启密码认证</a></li>
<li><a href="http://c.biancheng.net/view/6376.html" title="计算机网络由哪些硬件设备组成？">计算机网络由哪些硬件设备组成？</a></li>
<li><a href="http://c.biancheng.net/view/7209.html" title="NumPy ndarray合并数组">NumPy ndarray合并数组</a></li>
<li><a href="http://c.biancheng.net/view/9022.html" title="程序员结识新朋友的10个理由">程序员结识新朋友的10个理由</a></li>
</ul>
</div>
		</div>
		
	</div>
</div>
<script type="text/javascript">
// 当前文章ID
window.arcIdRaw = 'a_' + 7045;
window.arcId = "ac82XjzN3KRS1xEbLhiYDlPryDNOFL8EOPDV125/NG5kDo+gDNpKFy0X5Bs";
window.typeidChain = "117|79";
</script>
<div id="footer" class="clearfix">
	<div class="info left">
	<p>精美而实用的网站，分享优质编程教程，帮助有志青年。千锤百炼，只为大作；精益求精，处处斟酌；这种教程，看一眼就倾心。</p>
	<p>
		<a href="http://c.biancheng.net/view/8066.html" target="_blank" rel="nofollow">关于网站</a> <span>|</span>
		<a href="http://c.biancheng.net/view/8092.html" target="_blank" rel="nofollow">关于站长</a> <span>|</span>
		<a href="http://c.biancheng.net/view/8097.html" target="_blank" rel="nofollow">如何完成一部教程</a> <span>|</span>
		<a href="http://c.biancheng.net/view/8093.html" target="_blank" rel="nofollow">联系我们</a> <span>|</span>
		<a href="http://c.biancheng.net/sitemap/" target="_blank" rel="nofollow">网站地图</a>
	</p>
	<p>Copyright ©2012-2021 biancheng.net, <a href="http://www.beian.miit.gov.cn/" target="_blank" rel="nofollow" style="color:#666;">陕ICP备15000209号</a></p>
	</div>
	<img class="right" src="./1.10Java和C_C++到底有什么关系，它们有什么区别？_files/logo_bottom.gif" alt="底部Logo">
	<span id="return-top"><b>↑</b></span>
</div>

<script type="text/javascript">
window.siteId = 4;
window.cmsTemplets = "/templets/new";
window.cmsTempletsVer = "1.6.72";
</script>

<script src="./1.10Java和C_C++到底有什么关系，它们有什么区别？_files/jquery1.12.4.min.js.下载"></script>
<script src="./1.10Java和C_C++到底有什么关系，它们有什么区别？_files/common.js.下载"></script>
<span style="display:none;"><script src="./1.10Java和C_C++到底有什么关系，它们有什么区别？_files/z_stat.php" type="text/javascript" defer="defer" async="async"></script></span>

</body></html>